const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';
const JWT_TOKEN = 'your_jwt_token_here'; // 替换为实际的JWT token

// 设置请求头
const headers = {
  'Authorization': `Bearer ${JWT_TOKEN}`,
  'Content-Type': 'application/json'
};

// 测试VIP用户订单创建
async function testVipOrderCreation(shortsId, chapterId) {
  try {
    console.log(`👑 测试VIP用户订单创建 - 短剧${shortsId}章节${chapterId}...`);
    
    const response = await axios.get(
      `${BASE_URL}/shorts/chapter/video/${shortsId}/${chapterId}`,
      { headers }
    );
    
    console.log('✅ VIP订单创建成功:', JSON.stringify(response.data, null, 2));
    
    // 格式化输出
    const data = response.data;
    console.log(`\n📺 短剧ID: ${data.shortsId}`);
    console.log(`📖 章节ID: ${data.chapterId}`);
    console.log(`📝 章节标题: ${data.title}`);
    console.log(`🎥 视频URL: ${data.videoUrl || '暂无'}`);
    console.log(`🖼️ 封面: ${data.coverUrl || '暂无'}`);
    console.log(`⏱️ 时长: ${data.duration || 0}分钟`);
    console.log(`🔢 排序: ${data.sort}`);
    console.log(`💎 原积分: ${data.originalPoints}`);
    console.log(`💎 有效积分: ${data.effectivePoints}`);
    console.log(`👑 VIP用户: ${data.isVip ? '是' : '否'}`);
    console.log(`💰 免费: ${data.isFree ? '是' : '否'}`);
    
    // 订单信息验证
    if (data.orderInfo) {
      console.log(`📋 订单ID: ${data.orderInfo.orderId}`);
      console.log(`💎 扣除积分: ${data.orderInfo.points}`);
      console.log(`📅 创建时间: ${new Date(data.orderInfo.createdAt).toLocaleString()}`);
      console.log(`📊 订单状态: ${data.orderInfo.status}`);
      
      // VIP订单验证
      if (data.isVip && data.orderInfo.points === 0) {
        console.log('🎉 VIP订单验证成功：创建了订单但扣除0积分！');
      } else if (data.isVip && data.orderInfo.points > 0) {
        console.log('⚠️  VIP订单验证失败：应该扣除0积分');
      }
    } else {
      console.log('📋 订单信息: 无订单信息');
      if (data.isVip) {
        console.log('⚠️  VIP用户应该有订单信息');
      }
    }
    
    console.log(`💬 消息: ${data.message}`);
    
    return response.data;
  } catch (error) {
    console.error('❌ VIP订单创建失败:', error.response?.data || error.message);
    
    if (error.response?.status === 403) {
      console.log('💡 提示: VIP用户创建订单失败');
    } else if (error.response?.status === 400) {
      console.log('💡 提示: 请检查短剧ID和章节ID是否正确');
    } else if (error.response?.status === 401) {
      console.log('💡 提示: 请检查JWT token是否有效');
    }
    
    return null;
  }
}

// 测试重复访问VIP章节
async function testVipRepeatedAccess(shortsId, chapterId) {
  console.log(`\n🔄 测试VIP用户重复访问章节${chapterId}...\n`);
  
  // 第一次访问，创建订单
  console.log('1️⃣ 第一次访问，创建VIP订单...');
  const firstResult = await testVipOrderCreation(shortsId, chapterId);
  
  if (firstResult) {
    console.log('\n' + '─'.repeat(50));
    
    // 第二次访问，应该返回已有订单
    console.log('2️⃣ 第二次访问，返回已有VIP订单...');
    const secondResult = await testVipOrderCreation(shortsId, chapterId);
    
    if (secondResult && secondResult.orderInfo) {
      console.log('✅ 重复访问成功，返回已有VIP订单信息');
      console.log(`   订单ID: ${secondResult.orderInfo.orderId}`);
      console.log(`   扣除积分: ${secondResult.orderInfo.points}`);
      
      // 验证订单ID是否相同
      if (firstResult.orderInfo.orderId === secondResult.orderInfo.orderId) {
        console.log('🎉 订单ID一致，确认是同一个订单！');
      } else {
        console.log('⚠️  订单ID不一致，可能创建了重复订单');
      }
    }
  }
}

// 测试不同积分章节的VIP订单
async function testDifferentPointsChapters() {
  console.log('\n🎯 测试不同积分章节的VIP订单创建...\n');
  
  // 测试免费章节（积分为0）
  console.log('1️⃣ 测试免费章节（积分为0）的VIP订单...');
  await testVipOrderCreation(1, 1);
  
  console.log('\n' + '─'.repeat(50));
  
  // 测试付费章节（积分为5）
  console.log('2️⃣ 测试付费章节（积分为5）的VIP订单...');
  await testVipOrderCreation(1, 2);
  
  console.log('\n' + '─'.repeat(50));
  
  // 测试高积分章节（积分为20）
  console.log('3️⃣ 测试高积分章节（积分为20）的VIP订单...');
  await testVipOrderCreation(1, 3);
}

// 主测试函数
async function runVipOrderTests() {
  console.log('🚀 开始测试VIP用户订单创建功能...\n');
  
  if (JWT_TOKEN === 'your_jwt_token_here') {
    console.log('⚠️  请先设置有效的JWT token');
    console.log('   在脚本中修改 JWT_TOKEN 变量的值\n');
    return;
  }
  
  // 1. 测试不同积分章节的VIP订单
  await testDifferentPointsChapters();
  
  console.log('\n' + '='.repeat(60));
  
  // 2. 测试重复访问
  await testVipRepeatedAccess(1, 2);
  
  console.log('\n✨ VIP订单创建功能测试完成！');
  console.log('\n💡 测试要点:');
  console.log('   - VIP用户访问任何章节都应创建订单');
  console.log('   - VIP用户扣除0积分');
  console.log('   - 重复访问返回相同订单ID');
  console.log('   - 所有VIP订单都有完整的订单信息');
  console.log('   - 自动更新观看次数');
}

// 运行测试
runVipOrderTests().catch(console.error); 